package com.hjwei.staticProxy;

/**
 * 代理分为静态代理和动态代理
 *
 * <p>按照代理创建的时期，可以分为动态代理和静态代理：
 *
 * <p>静态代理：由程序员或者自动生成工具生成代理类，然后进行代理类的编译和运行。在代理类、委托类运行之前，代理类已经以.class的格式存在。
 *
 * <p>静态代理：在程序运行时，由反射机制动态创建而成。
 */
public class Test {

      /**
       * 从静态代理中可以看出： 1.接口：代理类需要实现一个接口，这个接口和委托类的接口是一样的，这样proxy才能和委托类行为表现一致
       *
       * <p>2. 方法（Method）:由于接口限制，proxy类中也要有interface中的各个方法，这就造成了代码重复
       *
       * @param args
       */
      public static void main(String[] args) {
          CountImpl countImpl = new CountImpl();
          CountProxy countProxy = new CountProxy(countImpl);
          countProxy.updateCount();
          countProxy.queryCount();
      }
}
